// 文件位置 /store/modules/wscont.js
import WebSocketConnectMethod from '@/store/wsconnecter' // 引入 WebSocket 连接方法

let wsInstance = null // 初始化 WebSocket 实例变量

const state = {
  socketState: 0, // 连接状态：0表示连接关闭，1表示连接成功，2表示连接失败
  lastText: '' // 存储最后接收到的文本消息
}

const mutations = {
  // 设置连接状态
  SET_STATE(stateObj, val) {
    stateObj.socketState = val
  },
  // 设置最后接收到的文本消息
  SET_LAST_TEXT(stateObj, val) {
    // console.log('内容', stateObj, val)

    stateObj.lastText = val
  },
  // 清空最后接收到的文本消息
  CLEAR_LAST_TEXT(stateObj) {
    stateObj.lastText = ''
  }
}

const actions = {
  // 启动 WebSocket 连接
  wsStart({ dispatch }) {
    if (!wsInstance) {
      // 如果 WebSocket 实例不存在
      wsInstance = new WebSocketConnectMethod('ws://192.168.1.223:10096/', {
        // 创建 WebSocket 实例
        dispatch // 传递 dispatch 方法，方便后续使用
      })
    }
    wsInstance.wsStart() // 启动 WebSocket 连接
  },

  // 发送消息到 WebSocket
  wsSend(_, data) {
    wsInstance?.wsSend(data) // 通过 WebSocket 实例发送消息
  },

  // 重置语音识别
  resetRecognition() {
    wsInstance?.resetRecognition() // 调用 WebSocket 实例的 resetRecognition 方法
  },

  // 处理 WebSocket 连接状态
  stateHandle({ commit }, val) {
    commit('SET_STATE', val) // 提交 mutation 更新连接状态
  },

  // 处理接收到的消息
  msgHandle({ commit }, val) {
    commit('SET_LAST_TEXT', val) // 提交 mutation 更新最后接收到的消息
  },

  // 清空接收到的消息
  clearSocketText({ commit }) {
    console.log('执行了清空')

    commit('CLEAR_LAST_TEXT') // 提交 mutation 清空消息
  }
}

const getters = {
  // 获取连接状态
  socketState: (state) => state.socketState,
  // 获取最后接收到的消息
  lastText: (state) => state.lastText
}

export default {
  namespaced: true, // 使用命名空间，避免与其他模块的命名冲突
  state,
  mutations,
  actions,
  getters
}
